package org.omg.dds.rpc;

import org.omg.dds.domain.DomainParticipant;
import org.omg.dds.sub.DataReaderQos;
import org.omg.dds.sub.Subscriber;
import org.omg.dds.pub.DataWriterQos;
import org.omg.dds.pub.Publisher;

public abstract class ServiceParams 
{
    public ServiceParams (DomainParticipant participant)
    {}
    
    abstract public <TReq, TRep> ServiceParams 
      serviceListener (ServiceListener< TReq, TRep > listener);
    
    abstract public <TReq, TRep> ServiceParams 
      asyncServiceListener (AsyncServiceListener< TReq, TRep > listener);
    
    abstract public ServiceParams  	serviceName (String serviceName);
    abstract public ServiceParams  	requestTopicName (String requestTopic);
    abstract public ServiceParams  	replyTopicName (String replyTopic);
    abstract public ServiceParams  	datawriterQos (DataWriterQos qos);
    abstract public ServiceParams  	datareaderQos (DataReaderQos qos);
    abstract public ServiceParams  	publisher (Publisher publisher);
    abstract public ServiceParams  	subscriber (Subscriber subscriber);
};
